<?php
if (!function_exists('add_table_comment')) {
    /**
     * 给数据表添加注释
     * @param string $table_name 数据表名称
     * @param string $comment 注释
     */
    function add_table_comment($table_name, $comment)
    {
        Illuminate\Support\Facades\DB::statement("ALTER TABLE `{$table_name}` comment '{$comment}'");
    }
}

if (!function_exists('add_column_to_table')) {
    /**
     * 给数据表添加字段
     * @param string $table_name 要添加字段的数据表名称
     * @param string $field_name 添加的字段名称
     * @param string $type 添加的字段类型
     * @param int $length 添加的字段长度
     * @param string $comment 添加的字段注释
     * @param string $after 在XX字段之后添加
     */
    function add_column_to_table($table_name, $field_name, $type = 'string', $length = 100, $comment = '', $after = '')
    {
        if (!Schema::hasTable($table_name)) {
            return;
        }
        Schema::table($table_name, function(\Illuminate\Database\Schema\Blueprint $table) use ($field_name, $type, $length, $comment, $after) {
            if ($after) {
                switch ($type) {
                    case 'string':
                        $table->$type($field_name, $length)->comment($comment)->after($after);
                        break;
                    case 'integer':
                    case 'tinyInteger':
                    case 'smallInteger':
                    case 'mediumInteger':
                    case 'bigInteger':
                        $table->$type($field_name)->comment($comment)->after($after);
                        break;
                }
            } else {
                switch ($type) {
                    case 'string':
                        $table->$type($field_name, $length)->comment($comment);
                        break;
                    case 'integer':
                    case 'tinyInteger':
                    case 'smallInteger':
                    case 'mediumInteger':
                    case 'bigInteger':
                        $table->$type($field_name)->comment($comment);
                        break;
                }
            }
        });
    }
}

if (!function_exists('column_exists')) {
    /**
     * 判断字段是否存在数据表
     * @param string $table_name 数据表名称
     * @param array $columns 要查询的字段名称
     * @return bool
     */
    function column_exists($table_name, array $columns)
    {
        if (!Schema::hasTable($table_name)) {
            return false;
        }
        return Schema::hasColumns($table_name, $columns);
    }
}

if (!function_exists('get_millisecond')) {
    /**
     * 生成13位时间戳
     * @return float
     */
    function get_millisecond()
    {
        list($t1, $t2) = explode(' ', microtime());
        return (float)sprintf('%.0f', (floatval($t1) + floatval($t2)) * 1000);
    }
}
